//启动服务 服务端渲染
var fs = require('fs');
var http = require('http');
var url = require('url');
var template = require('art-template');

var comments = [
    {name:'张三',message:'惊雷这通天修为天塌地陷紫金锤 ',dataTime:'2020-04-08'},
    {name:'李四',message:'紫电这玄真火焰九天玄剑惊天变 ',dataTime:'2020-04-08'},
    {name:'王五',message:'乌云我驰骋沙场呼啸烟雨顿说多情自古空余恨 ',dataTime:'2020-04-08'},
]
http.createServer(function(request,response){
    //var url = request.url;
    //console.log(url);
    var pathnameObj = url.parse(request.url,true);
    var pathname = pathnameObj.pathname;
    console.log(pathname);//拿到query对象
    
    if(pathname === '/'){
        fs.readFile('./views/index.html',function(err,data){
            if(err){return response.end('404')}
            var htmlStr = template.render(data.toString(),{
                comments:comments//把comments赋值给comments 
            })
            response.end(htmlStr);
        })
    }else if(pathname === '/post'){
        fs.readFile('./views/post.html',function(err,data){
            if(err){return response.end('404')}
            response.end(data);
        })
        //让pathname能够拿到/public  说明要访问我的静态资源
        //判断一个字符串是否存在用indexOf()方法
        //判断 public/是否存在 
    }else if(pathname.indexOf('/public/') === 0){
        //localhost:3500/public/css  只要包含了public/说明我访问的是静态资源
        //我要读取 public下面的css下面的bootstrap.min.css
        //拼串
        fs.readFile('.'+pathname,function(err,data){
            if(err){return response.end('404')}
            response.end(data);
        })

    }else if(pathname === '/pinglun'){
    //访问pinglun这个页面的操作
        var com = pathnameObj.query; //把com的内容添加到index页面中
        //console.log(com);
        comments.unshift(com); //把comments中定义的值添加到com数组中
        //console.log(comments);
        response.statusCode = 302;
        response.setHeader('Location','/');//Location指定重定向要重定到哪里去
        response.end();
    }else {
        fs.readFile('./views/404.html',function(err,data){
            response.end(data);
        })
    }
}).listen(3500,function(){
    console.log('server is running......');
})
//知识点1、浏览器收到HTML响应内容之后，开始从上到下依次解析
//当在解析的过程中，如果发现：link script img iframe video audio等带有src或者href（link）属性标签（具有外链的资源）的时候，浏览器会自动对这些资源发起新的请求。
//会把链接当成路径  去找我们对应的url  指定a标签跳转到/post页面
//index.html文件中 设置a标签中的href="/post"  点击发表留言 可以使'/'页面跳转到'/post'页面
//post.html文件中<a href="/">首页</a>  点击首页可以从'/post'页面跳转到'/'页面


//知识点2、在post.html文件中<form action="/pinglun" methods='get'> 
//action跳转的路径  get请求
//点击 发表留言 使'/post'页面跳转到'/'页面

//知识点3、url模块里面的方法
//var url = require('url')
//var pathnameObj = url.parse(request.url,true)
//console.log(pathname);//拿到query对象  pathname: '/',path: '/',href: '/'
//url.parse(请求路径，true)  
//true：将我们的query字符串转换成对象


//知识点4、向'/post'页面中添加数据
//使用art-template模板字符串 需要安装npm install art-template --save
//定义一个变量 comments定义一些数据
//var com = pathnameObj.query; //把com的内容添加到'/'页面中
//node使用art-template模板字符串 需要把response.end(data)改换用template.render(字符串，对象)渲染到浏览器页面


//知识点5、从'/post'页面添加完数据 跳转回根目录'/'页面
//根据响应结果状态码判断是否需要重定向，statusCode=302 
//如果点击提交，则需要重定向到'/'也就是我们的根目录
//response.statusCode = 302
//response.setHeader('Location','/')
//response.end()

//知识点6、引入bootstrap
//将node_modules里的bootstarp.min.css文件复制到public里的css文件夹中
//利用路由pathname进行跳转 '/public/'
//约定 只要包含public那就认为是访问我的静态资源 html  css js
//通过'.'+pathname拼串的方法 找到public的这些文件